<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>

    // Object.defineProperty() 定义新属性或修改原有的属性
    var obj = {
        id: 1,
        pName: '小米',
        price: 1999
    }

    // 1.以前的对象添加和修改属性的方式
    // obj.num = 999;
    // obj.price = 999;
    // console.log(obj)

    // 2.Object.defineProperty() 定义新属性或修改原有的属性
    Object.defineProperty(obj, 'num', {
        value: 1000,
        configurable: true
    })
    console.log(obj)

    Object.defineProperty(obj, 'id', {
        // false -> 不允许修改这个属性值 ture -> 允许
        writable: false
    })

    obj.id = 999;
    console.log(obj)

    Object.defineProperty(obj, 'address', {
        value: '山东蓝翔技校!',
        // 默认false, 则不允许遍历
        enumerable: false,
        // 默认 false, 不允许被删除, 不允许再次修改address属性的第三个descriptor特性
        configurable: false
    })

    // Uncaught TypeError: Cannot redefine property: address
    // Object.defineProperty(obj, 'address', {
    //     value: '山东蓝翔技校----!',
    //     enumerable: true,
    //     configurable: true
    // })

    console.log(obj)
    //  enumerable: false --> Object.keys(obj): id,pName,price
    console.log(`Object.keys(obj): ${Object.keys(obj)}`)

    delete obj.address;
    delete obj.num;
    console.log(obj)

</script>
</body>
</html>
